<?php
require_once 'BaseController.php';

/**
 * 店舗一覧コントローラクラス<br />
 *
 * @package apamanshop
 * @author　
 * @copyright　
 */
class Shop_RstshoplistController extends Shop_BaseController
{
	/**
	 * メインアクション
	 *
     * @access public
     * @return void
	 */
	public function indexAction()
	{
		if (Apm_Config_Search::RENEW_2012) {
			$this->_newTemplate = true;
			$this->_import_seo_search = true;
			// テンプレート変更
			$this->_error_helper = $this->getApmHelper('error_new_helper.tpl');
			$this->_list_helper  = $this->getApmHelper('list/list_new_helper.tpl');
		}
        //　CMS用パラメータ設定
        $this->setCmsParams();

        // 検索区分チェック
        if ($this->checkSrhKbn() == false)
        {
	        $this->_main_helper = $this->_error_helper;
	        return;
        }

         $srhKbn = $this->getParamValue('SrhKbn');

        if($srhKbn == Apm_Config_Shop::SEARCH_KUBUN_HOUZIN && ! is_null($this->getParamValue('OemCd')))
        {
        	// ヘッダ・フッター非表示
    		$this->setXPassThroutgh();
	        // 表示テンプレートパス設定
	        $this->_display_path = APPLICATION_PATH . '/modules/shop/views/scripts/index_no_header.tpl';
        }
        else
        {
			// 表示テンプレートパス設定
			if ($this->_newTemplate) {
				$this->_display_path = APPLICATION_PATH . '/modules/shop/views/scripts/index_new.tpl';
			} else {
				$this->_display_path = APPLICATION_PATH . '/modules/shop/views/scripts/index.tpl';
			}
        }

		// セッションクリア
		Apm_Session_GlobalNavi::clear();
		// パラメータをセッションにセット
		Apm_Util_GlobalNavi_Common::setTenpoSessionParameters($this->_params);

		// ショップNoから検索した場合
        $shopNo = $this->getParamValue('ShopNo');
        if (is_null($shopNo) == false)
        {
        	// 店舗コードを取得
        	$detailModel = new Shop_Model_Detail();
        	$shopCd = $detailModel->getShopCd($shopNo);

	        // 店舗コードが存在しない場合
	        if ($shopCd == '')
	        {
		        $this->_main_helper = $this->_error_helper;
		        return;
	        }
	        else
	        {
				$params = array();
				$params['ShopNo'] = $shopNo;
				$params['ShopCd'] = $shopCd;
				$params['SrhKbn'] = $this->getParamValue('SrhKbn');
				$params['PlaceKbn'] = $this->getParamValue('PlaceKbn');
				$params['direct'] = $this->getParamValue('direct');
				Apm_Util::redirect(Apm_Config_Shop::URL_DETAIL, $params);
	        }
        }

        // サービス内容クリック時の内容
        $tokucho_onclick = '';

        // 地図から探す・サービス内容から探すの場合（その他の場合も含む）
        if ($srhKbn == Apm_Config_Shop::SEARCH_KUBUN_MAP || Apm_Config_Shop::SEARCH_KUBUN_OTHER)
        {
        	// 沿線検索からの場合
	        if (!is_null($this->getParamValue('RailCd')))
	        {
	        	// モデルインスタンス生成
				$this->_model = new Shop_Model_ListForRail();
				$tokucho_onclick = "onclick=\"action='" . Apm_Config_Shop::URL_LIST . "'; javascript:ServiceControl(document.frm_pref);\"";
	        }
	        // 住所検索からの場合
	        else
	        {
				// モデルインスタンス生成
				$this->_model = new Shop_Model_ListForCity();
				$tokucho_onclick = "onclick=\"action='" . Apm_Config_Shop::URL_LIST . "'; javascript:ServiceControl(document.frm_pref);\"";
	        }
        }
        // 法人コードから探すの場合
        else if($srhKbn == Apm_Config_Shop::SEARCH_KUBUN_HOUZIN && ! is_null($this->getParamValue('OemCd')))
        {
        	// モデルインスタンス生成
			$this->_model = new Shop_Model_ListForCity();
        }
        // フリーワードから探すの場合
        else
        {
			// モデルインスタンス生成
			$this->_model = new Shop_Model_ListForCity();
		}
        // サービス内容クリック時の内容
		$this->_data['tokucho_onclick'] = $tokucho_onclick;
        // 店舗一覧データ取得
	    $shopList = $this->_model->getList($this->_params);
        // 取得結果が０件
        if (count($shopList) == 0)
        {
	        $this->_main_helper = $this->_error_helper;
	        return;
        }

        // 市区町村コードが存在しない場合（マイレージから遷移）
        if ($srhKbn == Apm_Config_Shop::SEARCH_KUBUN_OTHER && empty($this->_params['CityCd']))
        {
        	$this->_params['CityCd'] = array();

        	foreach ($shopList as $shop)
        	{
        		$this->_params['CityCd'][] = $shop['M05_TENPO_TODOUFUKEN_CD'] . $shop['M05_TENPO_SHIKUCHOUSON_CD'];
        	}
        	$this->_params['CityCd'] = array_unique($this->_params['CityCd']);
        }

        $url = $this->_baseurl . $this->deleteDiagonal(Apm_Config_Shop::URL_DETAIL);

        // 表示用データに変換
        $this->_data['shopList'] = $this->_model->convertList($shopList, $this->_tenpoimageurl, $url, $this->params);
        // (株)文字化け対応
        foreach ($this->_data['shopList'] as &$shop){
            $shop['M05_HOUZINMEI'] = Apm_Util::replaceUnicode($shop['M05_HOUZINMEI']);
        }

        // キーワードから検索の場合
        if ($srhKbn == Apm_Config_Shop::SEARCH_KUBUN_FREEWORD)
        {
	        // パンくず設定
	        $this->_breadcrumb->reset();
	        $this->_breadcrumb->add(Apm_Config_Search::BREADCRUMB_TOP, $this->_baseurl);
	        $url = $this->_baseurl . $this->deleteDiagonal(Apm_Config_Shop::URL_INDEX) . $this->createUrlParams();
	        $this->_breadcrumb->add('店舗検索', $url, 'shopindex');
			$url = $this->_baseurl . $this->deleteDiagonal(Apm_Config_Shop::URL_LIST) . $this->createUrlParams();
			$this->_breadcrumb->add('店舗一覧', $url, 'shoplist');
		}
		else
		{
			// SEOパラメータ取得
			if (!is_null($this->getParamValue('RailCd')) || !is_null($this->getParamValue('StCd'))) {
				$model_seo = new Shop_Model_SeoParamForRail();
			} else {
				$model_seo = new Shop_Model_SeoParamForCity();
			}
			$seo_params = $model_seo->getList($this->_params);
			if (!empty($seo_params)) {
				$key_array1 = array();
				$key_array2 = array();
				foreach ($seo_params as $value) {
					$key_array1[] = $value['TODOUFUKEN'].' '.$value['LIST'];
					$key_array2[] = $value['LIST'];
				}
				$key_list  = join(' ', $key_array2);
				$key_list2 = join(',', $key_array2);
				// タイトル設定
				$this->setTitle($key_list.'の店舗から賃貸を探す'.Apm_Config_Seo::TITLE_ADDTAIL);
				// Description設定
				$this->setDescription($key_list.'の店舗からお部屋を探すなら、'.Apm_Config_Seo::DESCRIPTION_ADDTAIL);
				// Keyword設定
				$this->setKeywords($key_list2.','.Apm_Config_Seo::KEYWORD_ADDTAIL);
				// H1
				$this->_data['h1_title'] = $key_list.'の店舗から探す。'.Apm_Config_Seo::H1_ADDTAIL;
				// ユニークテキスト
				$this->_data['unique_text'] = $key_list.'の店舗で賃貸住宅・賃貸マンション・賃貸アパートの検索はアパマンショップ！'.$key_list.'の店舗でペット相談可物件や、敷金礼金ダブル0の賃貸物件など、アパマンショップならではの情報が満載です。<br />'
				                            . '日本最大級のネットワークで'.$key_list.'の店舗での賃貸物件、賃貸マンション、賃貸アパートを探せます。'.Apm_Config_Seo::UNIQUE_TEXT_ADDTAIL;
				//$key_list = join(' ', $key_array1);
				//if (!empty($key_list)) $key_list .= 'の';
				//// タイトル設定
				//$this->setTitle($key_list.$this->_title_str);
				//// Description設定
				//$this->setDescription(str_replace('%%key%%', $key_list, $this->_description_str));
				//// Keyword設定
				//$key_list = join(' ', $key_array2);
				//if (!empty($key_list)) $key_list .= ' 賃貸,';
				//$this->setKeywords($key_list.$this->_keyword_str);
			}
			
			// canonical設定
			if (!isset($this->_params['Pattern']) && $this->_params['SrhKbn'] == Apm_Config_Shop::SEARCH_KUBUN_MAP && $this->_params['SrhType'] == Apm_Config_Shop::SEARCH_TYPE_CITY
			 && count($this->_params['PrefCd']) == 1 && count($this->_params['CityCd']) == 1 && $this->_params['tokucho01'] == '1') {
				// tokuchoチェック
				$tokucho = true;
				foreach ($this->_params as $key => $val) {
					$matches = array();
					if (preg_match('/^tokucho([0-9]+)$/', $key, $matches)) {
						if ($matches[1] != '01' && $val == '1') {
							$tokucho = false;
						}
					}
				}
				if ($tokucho) {
					$params = array();
					$params['Pattern']  = 'shop';
					$params['Category'] = '3';
					$params['PrefCd']   = $this->_params['PrefCd'][0];
					$params['PrefName'] = Apm_Config_Search::$TODOUFUKEN_NAME_CODE_LIST[$params['PrefCd']];
					$params['CityCd']   = $this->_params['CityCd'][0];
					$canonical = Apm_Bukkenurl::generateUrlByParametersShop($params);
					$this->addMetaCanonical($canonical);
				}
			}
			
			// パンくず設定
			if ($srhKbn == Apm_Config_Shop::SEARCH_KUBUN_MAP
			 && (($this->_params['SrhType'] == Apm_Config_Shop::SEARCH_TYPE_CITY && count($this->_params['CityCd']) == 1))) {
			//  || ($this->_params['SrhType'] == Apm_Config_Shop::SEARCH_TYPE_RAIL && count($this->_params['RailCd']) == 1))) {
				
				Apm_Bukkenbreadcrumb::generateBreadcrumbShop($this->_params, $this->_breadcrumb);
				
			} else {
				$this->updatePankuzu();
				$url = $this->_baseurl . $this->deleteDiagonal(Apm_Config_Shop::URL_LIST) . $this->createUrlParams();
				$this->_breadcrumb->add('店舗一覧', $url, 'shoplist');
			}
			
		}

        // BLOCKの設定
        $this->_main_helper = $this->_list_helper;
	}

	/**
	 * CMS用パラメータ設定
	 */
	private function setCmsParams()
	{
		if ($this->_newTemplate) {
			// タイトル設定
			$this->_title_str = '店舗一覧'.Apm_Config_Search::NEW_TITLE_ADD.Apm_Config_Search::TITLE_ADDTAIL;
			$this->setTitle($this->_title_str);
			// Description設定
			$this->_description_str = '%%key%%アパマンショップ一覧。%%key%%賃貸、賃貸マンション、賃貸アパート情報が満載！%%key%%アパマンショップなら、あなたにピッタリの賃貸物件が見つかります。';
			$this->setDescription(str_replace('%%key%%', '', $this->_description_str));
			// Keyword設定
			$this->_keyword_str = Apm_Config_Search::NEW_KEYWORDS_ADD;
			$this->setKeywords($this->_keyword_str);
			// css
			$this->addMetaCss('/common_new/css/sub02.css', array('media'=>'all'));
			$this->addMetaCss('/common_new/css/shop.css', array('media'=>'all'));
			// javascript
			$this->addMetaJs('/common_new/js/import.js');
		} else {
			// タイトル設定
			$this->setTitle('賃貸情報アパマンショップ[店舗から検索｜店舗一覧]');
			// Description設定
			$this->setDescription('');
			// Keyword設定
			$this->setKeywords('');
			// javascript
			$this->addMetaJs('/js/shop/list.js');
			$this->addMetaJs('/app/js/shop/shop.js');
			$this->addMetaJs('/app/js/shop/shopindex.js');
			$this->addMetaJs('/app/js/shop/search.js');
			// css
			$this->addMetaCss('/css/shop/shop.css');
		}
	}
}
?>
